import { dateUtil } from '/@/utils/dateUtil';
import { reactive, toRefs } from 'vue';
import { tryOnMounted, tryOnUnmounted } from '@vueuse/core';
export function useNow(immediate = true) {
    let timer;
    const state = reactive({
        year: 0,
        month: 0,
        week: '',
        day: 0,
        hour: '',
        minute: '',
        second: 0,
        meridiem: '',
    });
    const update = () => {
        const now = dateUtil();
        const h = now.format('HH');
        const m = now.format('mm');
        const s = now.get('s');
        state.year = now.get('y');
        state.month = now.get('M') + 1;
        state.week = '星期' + ['日', '一', '二', '三', '四', '五', '六'][now.day()];
        state.day = now.get('date');
        state.hour = h;
        state.minute = m;
        state.second = s;
        state.meridiem = now.format('A');
    };
    function start() {
        update();
        clearInterval(timer);
        timer = setInterval(() => update(), 1000);
    }
    function stop() {
        clearInterval(timer);
    }
    tryOnMounted(() => {
        immediate && start();
    });
    tryOnUnmounted(() => {
        stop();
    });
    return {
        ...toRefs(state),
        start,
        stop,
    };
}
